package queue

import (
	"errors"
	"fmt"
)

/**
非环形队列
*/

// 使用结构体管理队列

type NotLoopQueue struct {
	MaxSize int
	Array   []int
	Front   int
	Rear    int
}

func (q *NotLoopQueue) AddNotLoopQueue(value int) error {
	if q.Rear == q.MaxSize-1 {
		return errors.New("队列已满！")
	}
	q.Rear++
	q.Array[q.Rear] = value
	return nil
}

func (q *NotLoopQueue) ShowNotLoopQueue() {
	if q.Front == q.Rear {
		fmt.Println("队列为空！")
		return
	}
	for i := q.Front + 1; i <= q.Rear; i++ {
		fmt.Printf("Array[%d] = %d\n", i, q.Array[i])
	}
}

func (q *NotLoopQueue) GetNotLoopQueue() (interface{}, error) {
	if q.Front == q.Rear {
		return nil, errors.New("队列为空！~")
	}
	q.Front++
	return q.Array[q.Front], nil
}
